home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 33 / 64er_Magazin_Sonderheft_33_19xx_Markt__Technik_de_Side_A.d64 / quellcode giga (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  7KB  |  290 lines

  1. 10 ;*********************************
  2. 20 ;
  3. 30 ;         modern erase
  4. 40 ;         usrusrusrusrusrusrusrusrusrusrusrusr
  5. 50 ; (c) 1988 by dirk neumeister
  6. 60 ;
  7. 70 ; size   : $c000
  8. 80 ; laenge :   382 byte
  9. 90 ; source :  6515 byte
  10. 100 ;
  11. 110 ;*********************************
  12. 120 ;
  13. 130 ;
  14. 140 +$c000
  15. 150 ;
  16. 160 tab(vic=53248
  17. 170 tab(cia2=$dd00
  18. 180 tab(bild=648
  19. 190 tab(bild1=$0400
  20. 200 tab(bild2=$c400
  21. 210 ;
  22. 220 tosatz=$d000
  23. 230 toziel=$e000
  24. 240 tozeiger=$fa
  25. 250 topointer=$fd
  26. 260 toclear=$e544
  27. 270 toflag=$fc
  28. 280 tokomma=$aefd
  29. 290 togetbyte=$b79e
  30. 300 toget=$0073
  31. 310 ;
  32. 320 ;
  33. 330 ;
  34. 340 ;*********************************
  35. 350 ;
  36. 360 ; auswertung des sys-befehls
  37. 370 ;
  38. 380 ; sys 49152 => loeschen/anzeigen
  39. 390 ;
  40. 400 ; sys 49152,a,b,c,d,e,f,g,h
  41. 410 ;
  42. 420 ;       => reihenfolge festlegen
  43. 430 ;
  44. 440 ;*********************************
  45. 450 ;
  46. 460 ;
  47. 500 start mid$#","; test auf komma
  48. 510  len#00
  49. 520  str$($7a),y
  50. 530  (NULL)start3; wenn nein, dann direkt starten
  51. 540  peek#08; sonst acht zahlen, die die reihenfolge angeben
  52. 550  (NULL)$f7
  53. 560 start2 (NULL)komma
  54. 570  (NULL)getbyte; einlesen und
  55. 580  (NULL)
  56. 590  peek$f7
  57. 600  (NULL)reihenfol,x; speichern
  58. 610  chr$$f7
  59. 620  (NULL)start2
  60. 630 start3 (NULL)zclear; selbst modifz. code (jmp ($4c) = loeschen,
  61. 640 ;                       ; bit ($2a) = laden )
  62. 650 ;
  63. 660 ;
  64. 670 ;
  65. 680 ;*********************************
  66. 690 ;
  67. 700 ; vorbereitung der modern-routine
  68. 710 ;
  69. 720 ; zum anzeigen
  70. 730 ;
  71. 740 ;*********************************
  72. 750 ;
  73. 760 ;
  74. 1000 zladen pokexyclose(ladebit),variab+1; adr. verkn.byte zum anzeigen schreiben
  75. 1010  pokexclose$31,modern2-3; programm fuer zeichensatzlesen aendern
  76. 1020  pokexyclose$d000,$fd; startadresse zeichensatz
  77. 1030  pokexyclose$e000,$fa; endadresse zeichensatz
  78. 1040  pokexclose$11,oder; oder-verknuepung zulassen
  79. 1050  pokexclose$a9,lda; lda-befehl erlauben
  80. 1060  pokexclose$08,flag; flag fuer acht durchlaeufe setzen
  81. 1070  (NULL)modern; die eigentliche routine aufrufen
  82. 1080  verschiebeclose$c400,$c800,$0800
  83. 1090  bild0400; und wieder auf originalbildschirm umschalten
  84. 1100  pokeaclose$4c,start3; jmp-befehl erlauben => sys49152 = loeschen
  85. 1110  (NULL)
  86. 1120 ;
  87. 1130 ;
  88. 1140 ;
  89. 1150 ;*********************************
  90. 1160 ;
  91. 1170 ; vorbereitung der modern-routine
  92. 1180 ;
  93. 1190 ; zum loeschen
  94. 1200 ;
  95. 1210 ;*********************************
  96. 1220 ;
  97. 1230 ;
  98. 2000 zclear ramclose$31; zeichensatz kopieren
  99. 2010  copyclosesatz,$02,ziel,$04,4
  100. 2020  rom
  101. 2030  verschiebeclose$0400,$0800,$c800;bildschirm kopieren
  102. 2040  bildc400; und nach $c400 umschalten
  103. 2050  pokeaxclose(loeschbit),variab+1; auf zeichen loeschen umschalten
  104. 2060  pokexclose$34,modern2-3; zugriff auf rom und nicht auf zeichensatz
  105. 2070  pokexyclose$e000,$fa; zeichensatz bei $e000 kennzeichnen
  106. 2080  pokexyclose$e000,$fd
  107. 2090  pokexclose$24,oder; oder-verkuepfung unterbinden (oder => bit ($24))
  108. 2100  pokexclose$24,lda; lda-verknuepfung verbieten (lda => bit ($24))
  109. 2110  pokexclose$08,flag; flag fuer acht durchlaeufe setzen
  110. 2120  (NULL)modern; die eigentliche routine aufrufen
  111. 2130  (NULL)clear; bildschirm loeschen
  112. 2140  pokeaclose$2a,start3; bei naechsten aufruf: 'zeichen laden'(kein jmp)
  113. 2150  (NULL)
  114. 2160 ;
  115. 2170 ;
  116. 2180 ;
  117. 2190 ;*********************************
  118. 2200 ;
  119. 2210 ; eigentliche routine zum
  120. 2220 ;
  121. 2230 ; loeschen und erscheinen lassen
  122. 2240 ;
  123. 2250 ;*********************************
  124. 2260 ;
  125. 2270 ;
  126. 3000 modern ramclose$34; ram/zeichensatz einschalten
  127. 3010 modern2 mid$reihenfol,x; verknuepfungsbyte in abhaengigkeit der zu
  128. 3020  (NULL); bearbeitenden speicherstelle und
  129. 3030 variab mid$ladebit,y; reihenfolge laden
  130. 3040  len#00
  131. 3050  asc(pointer),y; und mit der speicherstelle verknuepfen
  132. 3060 oder (NULL)(zeiger),y; (loeschen: nur 'and', laden: 'and' & 'ora')
  133. 3070  (NULL)(zeiger),y
  134. 3080  (NULL)
  135. 3090  (NULL)modern3; x um eins erniedrigen, wenn kleiner als 1, dann
  136. 3100  peek#08; wieder auf 8 setzen
  137. 3110 modern3 right$zeiger; zeiger um eins erhoehen
  138. 3120  right$pointer
  139. 3130  (NULL)modern4
  140. 3140  right$zeiger+1
  141. 3150  right$pointer+1
  142. 3160 modern4 mid$zeiger+1; test ob alle speicherstellen bearbeitet wurden
  143. 3170  str$#$f0
  144. 3180  (NULL)modern2; wenn nein, dann wieder zurueck und weitermachen
  145. 3190  pokeaclose$e0,zeiger+1; zeiger wieder zurueckstellen
  146. 3200 lda pokeaclose$d0,pointer+1
  147. 3210  (NULL); reihenfolge der verknuefungsbyte um 1 verringern
  148. 3220  (NULL)modern5
  149. 3230  peek#08
  150. 3240 modern5 lenflag; test, ob der zeichensatz schon acht mal
  151. 3250  (NULL); bearbeitet worden ist
  152. 3260  (NULL)flag
  153. 3270  (NULL)modern2; wenn nein, dann weiter
  154. 3280  rom; sonst rom wieder einschalten
  155. 3290  (NULL); und ruecksprung
  156. 3300 ;
  157. 3310 ;
  158. 3320 ;
  159. 3330 ;*********************************
  160. 3340 ;
  161. 3350 ; tabellen
  162. 3360 ;
  163. 3370 ; - verknuepfungsbyte zum loeschen
  164. 3380 ;
  165. 3390 ; - verknuepfungsbyte zum anzeigen
  166. 3400 ;
  167. 3410 ; - reihenfolge der anwendung
  168. 3420 ;
  169. 3430 ;*********************************
  170. 3440 ;
  171. 3450 ;
  172. 10000 loeschbit fn127,191,223,239,247,251,253,254
  173. 10010 ladebit fn128,64,32,16,8,4,2,1
  174. 10020 reihenfol fn0,0,7,1,6,2,5,3,4
  175. 10030 ;
  176. 10040 ;
  177. 10050 ;
  178. 10060 ;*********************************
  179. 10070 ;
  180. 10080 ;      m a k r o s
  181. 10090 ;
  182. 10100 ; low level : - pokeax
  183. 10110 ;             - pokexy
  184. 10120 ;             - pokea
  185. 10130 ;             - pokex
  186. 10140 ;
  187. 10150 ; high level: - bildc400
  188. 10160 ;             - bild0400
  189. 10170 ;             - rom
  190. 10180 ;             - ram
  191. 10190 ;             - verschiebe
  192. 10200 ;             - copy
  193. 10210 ;
  194. 10220 ;*********************************
  195. 10230 ;
  196. 10240 ;
  197. 30000 getpokeaxclosevar,adr; 16-bit wert schrieben (verwendete register: a,x)
  198. 30010  mid$#<(var)
  199. 30020  peek#>(var)
  200. 30030  (NULL)adr
  201. 30040  (NULL)adr+1
  202. 30050 new
  203. 30060 ;
  204. 30070 getpokexyclosevar,adr; 16-bit wert schreiben (verwendete register: x,y)
  205. 30080  peek#<(var)
  206. 30090  len#>(var)
  207. 30100  (NULL)adr
  208. 30110  (NULL)adr+1
  209. 30120 new
  210. 30130 ;
  211. 30140 getpokeaclosevar,adr; 8-bit wert schreiben (verwendetes register: a)
  212. 30150  mid$#var
  213. 30160  (NULL)adr
  214. 30170 new
  215. 30180 ;
  216. 30190 getpokexclosevar,adr; 8-bit wert schreiben (verwendetes register: x)
  217. 30200  peek#var
  218. 30210  (NULL)adr
  219. 30220 new
  220. 30230 ;
  221. 30240 ;* * * * * * * * * * * * * * * * *
  222. 30250 ;
  223. 30260 getbildc400; bildschirm im bereich $c400 einschalten
  224. 30270  mid$cia2
  225. 30280  asc#252
  226. 30290  (NULL)cia2
  227. 30300  pokexclose196,bild
  228. 30310  mid$vic+24
  229. 30320  asc#$f3
  230. 30330  (NULL)#24
  231. 30340  (NULL)vic+24
  232. 30350 new
  233. 30360 ;
  234. 30370 getbild0400; bildschirm im bereich $0400 einschalten
  235. 30380  mid$cia2
  236. 30390  (NULL)#03
  237. 30400  (NULL)cia2
  238. 30410  pokexclose04,bild
  239. 30420  mid$vic+24
  240. 30430  asc#$f3
  241. 30440  (NULL)#20
  242. 30450  (NULL)vic+24
  243. 30460 new
  244. 30470 ;
  245. 30480 getverschiebecloseanfang,ende,nach; rom verschiebe-routine aufrufen
  246. 30490  pokexycloseanfang,$5f
  247. 30500  pokexycloseende,$5a
  248. 30510  pokexyclosenach,$58
  249. 30520  (NULL)$a3bf
  250. 30530 new
  251. 30540 ;
  252. 30550 getrom; auf rom umschalten
  253. 30560  (NULL)
  254. 30570  (NULL)$01
  255. 30580  (NULL)
  256. 30590 new
  257. 30600 ;
  258. 30610 getramclosevar; auf ram/zeichensatz umschalten
  259. 30620  (NULL)
  260. 30630  mid$$01
  261. 30640  (NULL)
  262. 30650  pokeaclosevar,$01
  263. 30660 new
  264. 30670 ;
  265. 30680 getcopyclosebeginn,var1,ende,var2,laenge; 16-bit verschiebe-routine
  266. 30690  pokeaxclose(beginn),var1
  267. 30700  pokeaxclose(ende),var2
  268. 30710  peek#laenge*8
  269. 30720  len#00
  270. 30730 copy1 mid$(var1),y
  271. 30740  (NULL)(var2),y
  272. 30750  (NULL)
  273. 30760  (NULL)copy1
  274. 30770  right$var1+1
  275. 30780  right$var2+1
  276. 30790  (NULL)
  277. 30800  (NULL)copy1
  278. 30810 new
  279. 30820 ;
  280. 30830 ;
  281. 30840 ;
  282. 30850 ;*********************************
  283. 30860 ;
  284. 30870 ; ende des quellcode-listings
  285. 30880 ;
  286. 30890 ;*********************************
  287. 30900 ;
  288. 30910 ;
  289. 60000 <
  290.